package cn.onein.edu.web.common.base;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.ui.Model;
import org.springframework.web.servlet.ModelAndView;

import cn.onein.edu.biz.bean.User;

/**
 * edu web的基础控制器类
 * @author Upton
 *
 */
public abstract class BaseController {
	/**
	 * TOP菜单的显示key
	 */
	public static final String MENU_KEY = "MENU_KEY";	
	/**
	 * 首页
	 */
	public static final String MENU_VALUE_INDEX = "MENU_VALUE_INDEX";
	/**
	 * 育儿百科
	 */
	public static final String MENU_VALUE_LEARN = "MENU_VALUE_LEARN";
	/**
	 * 用户中心
	 */
	public static final String MENU_VALUE_PERSON_CENTER = "MENU_VALUE_PERSON_CENTER";
	/**
	 * 个人资料
	 */
	public static final String MENU_VALUE_USER_INFO = "MENU_VALUE_USER_INFO";
	/**
	 * 会员服务
	 */
	public static final String MENU_VALUE_MEMBER_SERVICE = "MENU_VALUE_MEMBER_SERVICE";
	/**
	 * 精选指南
	 */
	public static final String MENU_VALUE_DAILY = "MENU_VALUE_DAILY";
	/**
	 * 注册用户
	 */
	public static final String MENU_VALUE_REGISTER = "MENU_VALUE_REGISTER";
	/**
	 * 用户登陆
	 */
	public static final String MENU_VALUE_LOGIN = "MENU_VALUE_LOGIN";
	/**
	 * 找回密码
	 */
	public static final String MENU_VALUE_LOST_PASSWORD = "MENU_VALUE_LOST_PASSWORD";
	/**
	 * 激活新邮箱
	 */
	public static final String MENU_VALUE_ACTIVE_NEW_EMAIL = "MENU_VALUE_ACTIVE_NEW_EMAIL";
	/**
	 * 用户分享
	 */
	public static final String MENU_VALUE_SHARE_ACTION = "MENU_VALUE_SHARE_ACTION";
	/**
	 * 支付服务
	 */
	public static final String MENU_VALUE_PAYMENT = "MENU_VALUE_PAYMENT";
	/**
	 * 服务条款
	 */
	public static final String MENU_VALUE_TERMS = "MENU_VALUE_TERMS";
	/**
	 * 会员服务条款
	 */
	public static final String MENU_VALUE_MEMBER_TERMS = "MENU_VALUE_MEMBER_TERMS";
	/**
	 * 帮助中心
	 */
	public static final String MENU_VALUE_HELP = "MENU_VALUE_HELP";
	/**
	 * 关于我们
	 */
	public static final String MENU_VALUE_ABOUT = "MENU_VALUE_ABOUT";
	/**
	 * 联系我们
	 */
	public static final String MENU_VALUE_CONTACT = "MENU_VALUE_CONTACT";
	/**
	 * 意见反馈
	 */
	public static final String MENU_VALUE_FEEDBACK = "MENU_VALUE_FEEDBACK";
	/**
	 * 专家团队
	 */
	public static final String MENU_VALUE_EDU_TEAM = "MENU_VALUE_EDU_TEAM";
	
	//////////////////////////////////////////////////////////////////
	/**
	 * 登陆用户的session key
	 */
	public static final String SESSION_USER_KEY = "SESSION_USER_KEY";	
	//////////////////////////////////////////////////////////////////
	/**
	 * 保存记住登录后的用户名COOKIE KEY
	 */
	public static final String COOKIE_KEY_USER = "oneinu";
	/**
	 * 保存记住登录后的密码COOKIE KEY
	 */
	public static final String COOKIE_KEY_PASS = "oneinP";
	//////////////////////////////////////////////////////////////////
	
	/**
	 * 通知消息的KEY
	 */
	public static final String INFO_MESSAGE_KEY = "INFO_MESSAGE_KEY";
	
	/**
	 * 错误消息的KEY
	 */
	public static final String ERROR_MESSAGE_KEY = "ERROR_MESSAGE_KEY";
	
	/**
	 * ajax 请求相应标志 --成功
	 */
	public static final String AJAXSUCCESS = "SUCCESS";
	
	/**
	 * ajax 请求相应标志 --失败
	 */
	public static final String AJAXERROR = "ERROR";
	
	/**
	 * ajax 请求相应标志 --超时
	 */
	public static final String AJAXTIMEOUT = "TIMEOUT";
	
	/**
	 *验证消息的KEY --已存在
	 */
	public static final String VALIDATE_EXIST_KEY = "VALIDATE_EXIST_KEY";
	
	/**
	 *验证消息的KEY --不存在
	 */
	public static final String VALIDATE_NOTEXIST_KEY = "VALIDATE_NOTEXIST_KEY";
	
	/**
	 *验证消息的KEY --匹配正确
	 */
	public static final String VALIDATE_RIGHT_KEY = "VALIDATE_RIGHT_KEY";
	
	/**
	 *验证消息的KEY --匹配错误
	 */
	public static final String VALIDATE_WRONG_KEY = "VALIDATE_WRONG_KEY";
	
	
	///////////////////////////////////////
	/**
	 * 育儿百科中显示热门搜索的request key
	 */
	public static final String REQUEST_KEY_HOT_TAGS = "REQUEST_KEY_HOT_TAGS";
	///////////////////////////////////////
	
	
	
	/**
	 * 设置菜单
	 * @param model
	 * @param menuValue
	 */
	protected void setMenu(Map<String, Object> model, String menuValue){
		model.put(MENU_KEY, menuValue);
	}
	
	/**
	 * 设置菜单
	 * @param modelView
	 * @param menuValue
	 */
	protected void setMenu(ModelAndView modelView, String menuValue){
		modelView.addObject(MENU_KEY, menuValue);
	}
	
	/**
	 * 设置菜单
	 * @param model
	 * @param menuValue
	 */
	protected void setMenu(Model model, String menuValue){
		model.addAttribute(MENU_KEY, menuValue);
	}
	
	/**
	 * 从http request中取得登陆用户
	 * @param request
	 * @return
	 */
	protected User getLoginUser(HttpServletRequest request) {
		HttpSession session = request.getSession(false);

		if (session == null) return null;

		return (User) session.getAttribute(SESSION_USER_KEY);
	}
}
